module Main
 (main)
where

import CompresorDeArchivos
import System

-- | Esta es la funcion principal (unica exportable).
--   Se leen los argumentos de la linea de comandos,
--   luego lee el contenido del archivo que se quiere
--   comprimir o descomprimir y se le pasa a ejecutar.

main = do 
  argumentos <- getArgs
  lee <- leerDeArchivo (head argumentos)
  ejecutar lee argumentos

-- | Esta Función dependiendo de los argumentos de entrada
--   comprime o descomprime un Archivo  cuyos datos se pasan
--   en el argumento Lee.
-- La firma de la función es la siguiente:
--     ejecutar :: [CompresorDeArchivos.Byte] -> [[Char]] -> IO ()
-- Esta comentada porque no quisimos tocar el módulo CompresorDeArchivos.hs
-- si no lo podemos tocar, no se puede exportar el tipo Byte necesario para
-- la firma.

ejecutar lee x
  | (length x == 3) && (last x == "codificar") = imprimirArchivo (head (drop 1 x)) (transformar True lee)
  | (length x == 3) && (last x == "decodificar") = imprimirArchivo (head (drop 1 x)) (transformar False lee)
  | otherwise = error "Main: verificar argumentos de entrada"

